// zoj3211
// run: $exec < input
#include <iostream>
#include <algorithm>
#include <cstring>

struct data { int a, b; };
int const maxn = 300;
data da[maxn];
int f[maxn][maxn];
int n, m;

bool cmp(data const & a, data const & b)
{
	return a.b < b.b;
}

int main()
{
	std::ios::sync_with_stdio(false);
	int T; std::cin >> T;
	while (T--) {
		std::cin >> n >> m;
		for (int i = 1; i <= n; i++) std::cin >> da[i].a;
		for (int i = 1; i <= n; i++) std::cin >> da[i].b;

		std::sort(da + 1, da + n + 1, cmp);
		std::memset(f, 0, sizeof(f));
		for (int i = 1; i <= n; i++)
			for (int j = 1; j <= m; j++)
				f[i][j] = std::max(f[i - 1][j], f[i - 1][j - 1] + da[i].a + (j - 1) * da[i].b);
		std::cout << f[n][m] << '\n';
	}
}

